package com.suray.wcs.service.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import com.suray.basic.wcs.utils.IBaseEnum;

import java.io.Serializable;

public enum WcsExceptionType implements IBaseEnum<Serializable> {
    /**
     * WCS系统异常
     */
    SYSTEMEXCEPTION(0, "WCS系统异常"),
    /**
     * res异常
     */
    RESEXCEPTION(1, "res异常"),
    /**
     * plc异常
     */
    PLCEXCEPTION(2, "plc异常");
    /**
     * 对应数字
     */
    @EnumValue
    private Integer exceptionNum;
    @JsonValue
    private String description;

    @Override
    public String toString() {
        return description;
    }

    public int getExceptionNum() {
        return exceptionNum;
    }

    WcsExceptionType(int exceptionNum, String description) {
        this.exceptionNum = exceptionNum;
        this.description = description;
    }

    public static WcsExceptionType parseException(int exceptionNum) {
        for (WcsExceptionType r : WcsExceptionType.values()) {
            if (r.getExceptionNum() == exceptionNum) {
                return r;
            }
        }
        throw new IllegalArgumentException("无法解析未知异常！");
    }

    @Override
    public Serializable getValue() {
        return null;
    }

    @Override
    public String getDescription() {
        return description;
    }

    @Override
    public Integer getVal() {
        return exceptionNum;
    }

}
